package com.example.demo.base.mapper;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

/**
 * <b>通用Service</b>
 * <p>
 * -Service层接口只需继承此抽象类就可以使用<br>
 * -如业务需求不能满足,可自行添加,或重写父类方法
 * 
 * @author Gray-bird
 *
 * @param <T>
 */
public abstract class BaseService<T> {

	@Autowired
	private BaseMapper<T> mapper;

	/**
	 * -条件查询单条
	 * 
	 * @param id
	 * @return
	 */

	public T findById(Integer id) {
		return mapper.findById(id);
	}

	/**
	 * -条件查询所有
	 * 
	 * @param t
	 * @return
	 */

	public List<T> listByMap(Map<String, Object> map) {
		return mapper.listByMap(map);
	}

	/**
	 * -条件查询所有
	 * 
	 * @param t
	 * @return
	 */

	public List<T> listByObject(T t) {
		return mapper.listByObject(t);
	}
	/**
	 * 条件查询实体
	 * @param t
	 * @return
	 */
	public T listByParameter(Object t) {
		return mapper.listByParameter(t);
	}

	/**
	 * -保存数据
	 * 
	 * @param t
	 * @return
	 */

	public int save(T t) {
		return mapper.save(t);
	}

	/**
	 * 跟新数据
	 * 
	 * @param map
	 * @return
	 */
	public int updateByMap(Map<String, Object> map) {
		return mapper.updateByMap(map);
	}

	/**
	 * -更新数据
	 * 
	 * @param t
	 * @return
	 */
	public int updateByObject(T t) {
		return mapper.updateByObject(t);
	}

	/**
	 * -删除数据
	 * 
	 * @param t
	 * @return
	 */

	public int deleteByObject(T t) {
		return mapper.deleteByObject(t);
	}

	/**
	 * -通过id删除数据
	 * 
	 * @param t
	 * @return
	 */

	public int deleteById(int id) {
		return mapper.deleteById(id);
	}

	/**
	 * 获取总记录数
	 * 
	 * @param t
	 * @return
	 */
	public Long getByObjectTotal(T t) {
		return mapper.getByObjectTotal(t);
	}

	/**
	 *  获取总记录数
	 * @param map
	 * @return
	 */
	public Long getByMapTotal(Map<String, Object> map) {
		return mapper.getByMapTotal(map);
	}
}
